home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / bldpas.zip / SCRNCNTL.PAS < prev    next >
Pascal/Delphi Source File  |  1980-01-01  |  5KB  |  216 lines

  1. UNIT SCRNCNTL;
  2. INTERFACE
  3. USES CRT, RAPSVARS;
  4. Procedure ENTERDATA;
  5. Procedure FindFldseq;
  6. Implementation
  7.  
  8. Procedure FindFldseq;
  9. Begin
  10.  
  11.     IF Fldseq < Frstdatafld Then Fldseq := Frstdatafld;
  12.  
  13.     IF Skip_Prev Then
  14.     Begin
  15.       While (Mapattr[Fldseq] = 'P')
  16.       And   (Fldseq > Frstdatafld) DO
  17.         Fldseq := Fldseq - 1;
  18.     End;
  19.  
  20.     IF (Fldseq = Frstdatafld)
  21.     And (Mapattr[Fldseq] = 'P') Then
  22.     Begin
  23.       Fldseq := Fldseq + 1;
  24.       Skip_Prev := False;
  25.     End;
  26.  
  27.     IF (Fldseq = Lastdatafld)
  28.     And (Mapattr[Fldseq] = 'P') Then
  29.     Begin
  30.       Fldseq := Fldseq - 1;
  31.       Skip_Prev := True;
  32.     End;
  33.  
  34.     While (Mapattr[Fldseq] = 'P')
  35.     And (Fldseq > Frstdatafld)
  36.     And (Fldseq < Lastdatafld) DO
  37.       Fldseq := Fldseq + 1;
  38.  
  39.     Case Mapcolr[Fldseq] of
  40.       'B' : Textcolor(Blue);
  41.       'R' : Textcolor(Red);
  42.       'G' : Textcolor(Green);
  43.       'C' : Textcolor(Cyan);
  44.       'K' : Textcolor(Black);
  45.       'Y' : Textcolor(Yellow);
  46.       'W' : Textcolor(White);
  47.       'M' : TextColor(Magenta);
  48.     End;
  49.  
  50. End;
  51.  
  52. Procedure Enterdata;
  53. Begin
  54.   Skip_Prev := False;
  55.   Continue  := True;
  56.   Fldseq    := HldFldseq;
  57.   FindFldseq;
  58.   Gotoxy(Mappos[Fldseq], Mapln[Fldseq]);
  59.  
  60.  
  61.   While Continue DO
  62.   Begin
  63.     Fkey := False;
  64.     Skip_prev := False;
  65.     Keychar := Readkey;
  66.     Hldchar := Keychar;
  67.    Case Keychar Of
  68.    #0 :
  69.       Begin
  70.         Fkey := True;
  71.         Keychar := Readkey;
  72.         CASE Keychar OF
  73.           #15 : Begin
  74.                   IF Fldseq > Frstdatafld Then
  75.                   Begin
  76.                     Fldseq := Fldseq - 1;
  77.                     Skip_Prev := True;
  78.                     FindFldseq;
  79.                   End;
  80.                 End;
  81.           #71 : Begin
  82.                   Fldseq := Frstdatafld;
  83.                   FindFldseq;
  84.                   Xpos := Mappos[Fldseq];
  85.                   Ypos := Mapln[Fldseq];
  86.                   Gotoxy(Xpos, Ypos);
  87.                 End;
  88.           #72 : Gotoxy(Wherex,Wherey-1);
  89.           #75 : Gotoxy(Wherex-1,Wherey);
  90.           #77 : Gotoxy(Wherex+1,Wherey);
  91.           #79 : Begin
  92.                   Fldseq := Lastdatafld;
  93.                   Skip_Prev := True;
  94.                   FindFldseq;
  95.                   Xpos := Mappos[Fldseq];
  96.                   Ypos := Mapln[Fldseq];
  97.                   Gotoxy(Xpos, Ypos);
  98.                   Fldseq := Lastdatafld;
  99.                 End;
  100.           #80 : Gotoxy(Wherex,Wherey+1);
  101.           #59, #60, #61, #62, #63, #64, #65, #66, #67,
  102.           #68, #73, #81 : Continue := False;
  103.         End;
  104.       End;
  105.     #9  : Begin
  106.             IF Fldseq < Lastdatafld Then
  107.             Begin
  108.               Skip_Prev := False;
  109.               Fldseq := Fldseq + 1;
  110.               FindFldseq;
  111.             End;
  112.           End;
  113.     #13 : Continue := False;
  114.     #27 : Continue := False;
  115.     ELSE
  116.       Scrnln[Wherey, Wherex] := Keychar;
  117.       If MapAttr[FldSeq] <> 'N' Then
  118.       Begin
  119.         WRITE(Keychar);
  120.       End
  121.       Else
  122.       Begin
  123.         Write(' ');
  124.       End;
  125.       Keychar := ' ';
  126.       IF Mappos[Fldseq] > Wherex Then
  127.       Begin
  128.         IF Fldseq > Frstdatafld Then
  129.         Begin
  130.           Fldseq := Fldseq - 1;
  131.           Skip_Prev := True;
  132.           FindFldseq;
  133.         End;
  134.         Xpos := Mappos[Fldseq];
  135.         Ypos := Mapln[Fldseq];
  136.         Gotoxy(Xpos, Ypos);
  137.       End;
  138.       IF Mappos[Fldseq] +
  139.         Maplen[Fldseq] - 1 < Wherex Then
  140.       Begin
  141.         IF Fldseq < Lastdatafld Then
  142.         Begin
  143.           Fldseq := Fldseq + 1;
  144.           FindFldseq;
  145.         End;
  146.         Xpos := Mappos[Fldseq];
  147.         Ypos := Mapln[Fldseq];
  148.         Gotoxy(Xpos, Ypos);
  149.       End;
  150.     End;
  151.  
  152.     IF Fldseq < Frstdatafld Then
  153.     Begin
  154.       Fldseq := Frstdatafld;
  155.       FindFldseq;
  156.     End;
  157.  
  158.     IF Fldseq > Lastdatafld Then
  159.     Begin
  160.       Fldseq := Lastdatafld;
  161.       FindFldseq;
  162.     End;
  163.     IF ((Keychar = #77)
  164.     And (Mappos[Fldseq]+Maplen[Fldseq]-1
  165.     < Wherex))
  166.     OR (Keychar = #9) OR (Keychar = #80) Then
  167.     Begin
  168.       IF (Keychar = #77) OR (Keychar = #80)  Then
  169.       Begin
  170.         IF Fldseq < Lastdatafld Then
  171.         Begin
  172.           Fldseq := Fldseq + 1;
  173.           FindFldseq;
  174.         End;
  175.       End;
  176.  
  177.       Xpos  := Mappos[Fldseq];
  178.       Ypos  := Mapln[Fldseq];
  179.       Gotoxy(Xpos, Ypos);
  180.     End;
  181.  
  182.     IF ((Keychar = #75)
  183.     And (Mappos[Fldseq] > Wherex))
  184.     OR (Keychar = #15) OR (Keychar = #72) Then
  185.     Begin
  186.       IF (Keychar = #72) OR (Keychar = #75) Then
  187.       Begin
  188.         IF Fldseq > Frstdatafld Then
  189.         Begin
  190.           Fldseq := Fldseq - 1;
  191.           Skip_Prev := True;
  192.           FindFldseq;
  193.         End;
  194.       End;
  195.       Xpos  := Mappos[Fldseq];
  196.       Ypos  := Mapln[Fldseq];
  197.       Gotoxy(Xpos, Ypos);
  198.     End;
  199.  
  200.     Xpos := Wherex;
  201.     Ypos := Wherey;
  202.  
  203.     Function_Key := Keychar;
  204.     Keychar      := Hldchar;
  205.     HldFldseq := Fldseq;
  206.  
  207.     CASE Keychar OF
  208.       #4, #13, #27 : Continue := False;
  209.     End;
  210.  
  211.   End;
  212.  
  213. End;
  214.  
  215. END.
  216.